home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / netinet / ip.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  8KB  |  250 lines

  1. /* Copyright (C) 1991,92,93,95,96,97,98,99,2000 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. #ifndef __NETINET_IP_H
  20. #define __NETINET_IP_H 1
  21.  
  22. #include <features.h>
  23. #include <sys/types.h>
  24.  
  25. #include <netinet/in.h>
  26.  
  27. __BEGIN_DECLS
  28.  
  29. struct timestamp
  30.   {
  31.     u_int8_t len;
  32.     u_int8_t ptr;
  33. #if __BYTE_ORDER == __LITTLE_ENDIAN
  34.     unsigned int flags:4;
  35.     unsigned int overflow:4;
  36. #elif __BYTE_ORDER == __BIG_ENDIAN
  37.     unsigned int overflow:4;
  38.     unsigned int flags:4;
  39. #else
  40. # error    "Please fix <bits/endian.h>"
  41. #endif
  42.     u_int32_t data[9];
  43.   };
  44.  
  45. struct iphdr
  46.   {
  47. #if __BYTE_ORDER == __LITTLE_ENDIAN
  48.     unsigned int ihl:4;
  49.     unsigned int version:4;
  50. #elif __BYTE_ORDER == __BIG_ENDIAN
  51.     unsigned int version:4;
  52.     unsigned int ihl:4;
  53. #else
  54. # error    "Please fix <bits/endian.h>"
  55. #endif
  56.     u_int8_t tos;
  57.     u_int16_t tot_len;
  58.     u_int16_t id;
  59.     u_int16_t frag_off;
  60.     u_int8_t ttl;
  61.     u_int8_t protocol;
  62.     u_int16_t check;
  63.     u_int32_t saddr;
  64.     u_int32_t daddr;
  65.     /*The options start here. */
  66.   };
  67.  
  68. #ifdef __USE_BSD
  69. /*
  70.  * Copyright (c) 1982, 1986, 1993
  71.  *    The Regents of the University of California.  All rights reserved.
  72.  *
  73.  * Redistribution and use in source and binary forms, with or without
  74.  * modification, are permitted provided that the following conditions
  75.  * are met:
  76.  * 1. Redistributions of source code must retain the above copyright
  77.  *    notice, this list of conditions and the following disclaimer.
  78.  * 2. Redistributions in binary form must reproduce the above copyright
  79.  *    notice, this list of conditions and the following disclaimer in the
  80.  *    documentation and/or other materials provided with the distribution.
  81.  * 4. Neither the name of the University nor the names of its contributors
  82.  *    may be used to endorse or promote products derived from this software
  83.  *    without specific prior written permission.
  84.  *
  85.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  86.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  87.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  88.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  89.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  90.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  91.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  92.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  93.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  94.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  95.  * SUCH DAMAGE.
  96.  *
  97.  *    @(#)ip.h    8.1 (Berkeley) 6/10/93
  98.  */
  99.  
  100. /*
  101.  * Definitions for internet protocol version 4.
  102.  * Per RFC 791, September 1981.
  103.  */
  104.  
  105. /*
  106.  * Structure of an internet header, naked of options.
  107.  */
  108. struct ip
  109.   {
  110. #if __BYTE_ORDER == __LITTLE_ENDIAN
  111.     unsigned int ip_hl:4;        /* header length */
  112.     unsigned int ip_v:4;        /* version */
  113. #endif
  114. #if __BYTE_ORDER == __BIG_ENDIAN
  115.     unsigned int ip_v:4;        /* version */
  116.     unsigned int ip_hl:4;        /* header length */
  117. #endif
  118.     u_int8_t ip_tos;            /* type of service */
  119.     u_short ip_len;            /* total length */
  120.     u_short ip_id;            /* identification */
  121.     u_short ip_off;            /* fragment offset field */
  122. #define    IP_RF 0x8000            /* reserved fragment flag */
  123. #define    IP_DF 0x4000            /* dont fragment flag */
  124. #define    IP_MF 0x2000            /* more fragments flag */
  125. #define    IP_OFFMASK 0x1fff        /* mask for fragmenting bits */
  126.     u_int8_t ip_ttl;            /* time to live */
  127.     u_int8_t ip_p;            /* protocol */
  128.     u_short ip_sum;            /* checksum */
  129.     struct in_addr ip_src, ip_dst;    /* source and dest address */
  130.   };
  131.  
  132. /*
  133.  * Time stamp option structure.
  134.  */
  135. struct ip_timestamp
  136.   {
  137.     u_int8_t ipt_code;            /* IPOPT_TS */
  138.     u_int8_t ipt_len;            /* size of structure (variable) */
  139.     u_int8_t ipt_ptr;            /* index of current entry */
  140. #if __BYTE_ORDER == __LITTLE_ENDIAN
  141.     unsigned int ipt_flg:4;        /* flags, see below */
  142.     unsigned int ipt_oflw:4;        /* overflow counter */
  143. #endif
  144. #if __BYTE_ORDER == __BIG_ENDIAN
  145.     unsigned int ipt_oflw:4;        /* overflow counter */
  146.     unsigned int ipt_flg:4;        /* flags, see below */
  147. #endif
  148.     u_int32_t data[9];
  149.   };
  150. #endif /* __USE_BSD */
  151.  
  152. #define    IPVERSION    4               /* IP version number */
  153. #define    IP_MAXPACKET    65535        /* maximum packet size */
  154.  
  155. /*
  156.  * Definitions for IP type of service (ip_tos)
  157.  */
  158. #define    IPTOS_TOS_MASK        0x1E
  159. #define    IPTOS_TOS(tos)        ((tos) & IPTOS_TOS_MASK)
  160. #define    IPTOS_LOWDELAY        0x10
  161. #define    IPTOS_THROUGHPUT    0x08
  162. #define    IPTOS_RELIABILITY    0x04
  163. #define    IPTOS_LOWCOST        0x02
  164. #define    IPTOS_MINCOST        IPTOS_LOWCOST
  165.  
  166. /*
  167.  * Definitions for IP precedence (also in ip_tos) (hopefully unused)
  168.  */
  169. #define    IPTOS_PREC_MASK            0xe0
  170. #define    IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK)
  171. #define    IPTOS_PREC_NETCONTROL        0xe0
  172. #define    IPTOS_PREC_INTERNETCONTROL    0xc0
  173. #define    IPTOS_PREC_CRITIC_ECP        0xa0
  174. #define    IPTOS_PREC_FLASHOVERRIDE    0x80
  175. #define    IPTOS_PREC_FLASH        0x60
  176. #define    IPTOS_PREC_IMMEDIATE        0x40
  177. #define    IPTOS_PREC_PRIORITY        0x20
  178. #define    IPTOS_PREC_ROUTINE        0x00
  179.  
  180. /*
  181.  * Definitions for options.
  182.  */
  183. #define    IPOPT_COPY        0x80
  184. #define    IPOPT_CLASS_MASK    0x60
  185. #define    IPOPT_NUMBER_MASK    0x1f
  186.  
  187. #define    IPOPT_COPIED(o)        ((o) & IPOPT_COPY)
  188. #define    IPOPT_CLASS(o)        ((o) & IPOPT_CLASS_MASK)
  189. #define    IPOPT_NUMBER(o)        ((o) & IPOPT_NUMBER_MASK)
  190.  
  191. #define    IPOPT_CONTROL        0x00
  192. #define    IPOPT_RESERVED1        0x20
  193. #define    IPOPT_DEBMEAS        0x40
  194. #define    IPOPT_MEASUREMENT       IPOPT_DEBMEAS
  195. #define    IPOPT_RESERVED2        0x60
  196.  
  197. #define    IPOPT_EOL        0        /* end of option list */
  198. #define    IPOPT_END        IPOPT_EOL
  199. #define    IPOPT_NOP        1        /* no operation */
  200. #define    IPOPT_NOOP        IPOPT_NOP
  201.  
  202. #define    IPOPT_RR        7        /* record packet route */
  203. #define    IPOPT_TS        68        /* timestamp */
  204. #define    IPOPT_TIMESTAMP        IPOPT_TS
  205. #define    IPOPT_SECURITY        130        /* provide s,c,h,tcc */
  206. #define    IPOPT_SEC        IPOPT_SECURITY
  207. #define    IPOPT_LSRR        131        /* loose source route */
  208. #define    IPOPT_SATID        136        /* satnet id */
  209. #define    IPOPT_SID        IPOPT_SATID
  210. #define    IPOPT_SSRR        137        /* strict source route */
  211. #define    IPOPT_RA        148        /* router alert */
  212.  
  213. /*
  214.  * Offsets to fields in options other than EOL and NOP.
  215.  */
  216. #define    IPOPT_OPTVAL        0        /* option ID */
  217. #define    IPOPT_OLEN        1        /* option length */
  218. #define    IPOPT_OFFSET        2        /* offset within option */
  219. #define    IPOPT_MINOFF        4        /* min value of above */
  220.  
  221. #define    MAX_IPOPTLEN        40
  222.  
  223. /* flag bits for ipt_flg */
  224. #define    IPOPT_TS_TSONLY        0        /* timestamps only */
  225. #define    IPOPT_TS_TSANDADDR    1        /* timestamps and addresses */
  226. #define    IPOPT_TS_PRESPEC    3        /* specified modules only */
  227.  
  228. /* bits for security (not byte swapped) */
  229. #define    IPOPT_SECUR_UNCLASS    0x0000
  230. #define    IPOPT_SECUR_CONFID    0xf135
  231. #define    IPOPT_SECUR_EFTO    0x789a
  232. #define    IPOPT_SECUR_MMMM    0xbc4d
  233. #define    IPOPT_SECUR_RESTR    0xaf13
  234. #define    IPOPT_SECUR_SECRET    0xd788
  235. #define    IPOPT_SECUR_TOPSECRET    0x6bc5
  236.  
  237. /*
  238.  * Internet implementation parameters.
  239.  */
  240. #define    MAXTTL        255        /* maximum time to live (seconds) */
  241. #define    IPDEFTTL    64        /* default ttl, from RFC 1340 */
  242. #define    IPFRAGTTL    60        /* time to live for frags, slowhz */
  243. #define    IPTTLDEC    1        /* subtracted when forwarding */
  244.  
  245. #define    IP_MSS        576        /* default maximum segment size */
  246.  
  247. __END_DECLS
  248.  
  249. #endif /* netinet/ip.h */
  250.